package cn.shenning.algorithm.array;

// 二叉树
class TreeNode {
	int val;
	// 左孩子
	TreeNode left;
	// 右孩子
	TreeNode right;

	public TreeNode(int val) {
		super();
		this.val = val;
	}
	public int getVal() {
		return val;
	}
	public TreeNode getLeft() {
		return left;
	}
	public void setLeft(TreeNode left) {
		this.left = left;
	}
	public TreeNode getRight() {
		return right;
	}
	public void setRight(TreeNode right) {
		this.right = right;
	}
	public void setVal(int val) {
		this.val = val;
	}
	
	/**
	 * 先序遍历
	 * @param rootTreeNode 根节点
	 */
	public static void preTraverseBTree(TreeNode rootTreeNode){
		if(rootTreeNode != null){
			// 访问根节点
			System.out.println(rootTreeNode.getVal());
			// 访问左节点
			System.out.println(rootTreeNode.getLeft());
			// 访问右节点
			System.out.println(rootTreeNode.getRight());
		}
		
	}
	
	public static void main(String[] args) {
		//  10
		// 9  20
		//   15 35
		
		// 先序遍历：10->9->20->15->35
		// 中序遍历：9->10->15->20->35
		// 后序遍历：9->15->35->20->10
		TreeNode treeNode1 = new TreeNode(10);// 根节点→10
		TreeNode treeNode2 = new TreeNode(9);// 左孩子→9
		TreeNode treeNode3 = new TreeNode(20);// 右孩子→20
		TreeNode treeNode4 = new TreeNode(15);// 20的左孩子→15
		TreeNode treeNode5 = new TreeNode(35);// 20的右孩子→35
		// 连接
		treeNode1.setLeft(treeNode2);
		treeNode1.setRight(treeNode3);
		treeNode3.setLeft(treeNode4);
		treeNode3.setRight(treeNode5);
		
		preTraverseBTree(treeNode1);
	}
}






